In some memory devices, host data is initially written into single level cell (SLC) blocks. The data from SLC blocks may then be transferred or “folded” into a multi-level cell (MLC) block. The amount of data written by the host may be the amount that is folded as well. This process works well if the data present in the SLC blocks to be folded is all valid or mostly valid. If the number of invalidated data fragments is too high in an SLC block, “compaction” is performed to ensure that invalidated data fragments are not folded to an MLC block, to reduce write amplification or the like.
When a source block is chosen for Garbage collection (GC), compaction may be triggered in phases concurrently with host writes. For example, for every host write command, a compaction phase may be triggered for a fixed amount of time. This fixed amount of time may be predetermined and may be independent of the size of the write command from the host. This means, irrespective of whether the host issues random write commands (e.g., smaller sized data chunks) or sequential writes (e.g., larger sized data chunks), the host may be made to wait for the same amount of time while compaction occurs during a GC process and/or folding process.